The present disclosure generally relates to computer animation, and more specifically to rendering.
In computer animation involving a three-dimensional (3D) scene, two-dimensional (2D) images of the 3D scene may be created through a rendering process. The rendering process typically generates the 2D images from a viewpoint of a virtual camera. This process is analogous to taking a photograph of real-world scene using a physical camera. This process may involve mathematically modeling the interaction of light with objects in the 3D scene before rendering the images.
Ray tracing is a technique that is used in the rendering process. In ray tracing, a ray may be cast from the virtual camera, through a pixel of a plane of a 2D image to be rendered, into the 3D scene. An object in the 3D scene can be found as the closest object blocking the path of the ray. This object is then identified as an object that can be seen through the pixel. Using texture information and information regarding the light sources of the 3D scene, the rendering process can determine a shading of this object. Thus, through ray tracing, objects directly “visible” by the virtual camera can be identified as an on-camera object, and objects not directly “seen” by the virtual camera can identified as an off-camera object. Along the ray path back to a light source, a ray may nevertheless “hit” one or more off-camera objects in the 3D scene, even though the one or more off-camera objects do not explicitly appear in the rendered image. Thus, such objects can affect the display of visible objects. However, it can be computationally intensive to account for every object in a 3D scene.
Therefore, it is desirable to provide new systems and methods for efficiently and accurately rendering a 3D scene when ray tracing is used.